<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Software rendering</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Software_rendering"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Software_rendering rootpage-Software_rendering skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Software rendering</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1305433154">
/* start https://en.wikipedia.org/ */
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1248332772">
/* start https://en.wikipedia.org/ */
.mw-parser-output .multiple-issues-text{width:95%;margin:0.2em 0}.mw-parser-output .multiple-issues-text>.mw-collapsible-content{margin-top:0.3em}.mw-parser-output .compact-ambox .ambox{border:none;border-collapse:collapse;background-color:transparent;margin:0 0 0 1.6em!important;padding:0!important;width:auto;display:block}body.mediawiki .mw-parser-output .compact-ambox .ambox.mbox-small-left{font-size:100%;width:auto;margin:0}.mw-parser-output .compact-ambox .ambox .mbox-text{padding:0!important;margin:0!important}.mw-parser-output .compact-ambox .ambox .mbox-text-span{display:list-item;line-height:1.5em;list-style-type:disc}body.skin-minerva .mw-parser-output .multiple-issues-text>.mw-collapsible-toggle,.mw-parser-output .compact-ambox .ambox .mbox-image,.mw-parser-output .compact-ambox .ambox .mbox-imageright,.mw-parser-output .compact-ambox .ambox .mbox-empty-cell,.mw-parser-output .compact-ambox .hide-when-compact{display:none}
/* end https://en.wikipedia.org/ */
</style>
<p><b>Software rendering</b> is the process of generating an image from a model by means of computer software. In the context of <a href="Rendering_(computer_graphics)" title="Rendering (computer graphics)">computer graphics rendering</a>, software rendering refers to a rendering process that is not dependent upon <a href="Graphics_hardware" title="Graphics hardware">graphics hardware</a> <a href="Application-specific_integrated_circuit" title="Application-specific integrated circuit">ASICs</a>, such as a <a href="Graphics_card" title="Graphics card">graphics card</a>. The rendering takes place entirely in the <a href="Central_processing_unit" title="Central processing unit">CPU</a>. Rendering everything with the (general-purpose) CPU has the main advantage that it is not restricted to the (limited) capabilities of graphics hardware, but the disadvantage is that more transistors are needed to obtain the same speed.
</p><p>Rendering is used in architecture, simulators, video games, movies and television visual effects and design visualization. Rendering is the last step in an animation process, and gives the final appearance to the models and animation with visual effects such as shading, texture-mapping, shadows, <a href="Reflection_(computer_graphics)" title="Reflection (computer graphics)">reflections</a> and motion blur.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> Rendering can be split into two main categories: <a href="Real-time_computer_graphics" title="Real-time computer graphics">real-time rendering</a> (also known as online rendering), and pre-rendering (also called offline rendering). Real-time rendering is used to interactively render a scene, like in <a href="3D_computer_game" class="mw-redirect" title="3D computer game">3D computer games</a>, and generally each frame must be rendered in a few milliseconds. Offline rendering is used to create realistic images and movies, where each frame can take hours or days to complete, or for debugging of complex graphics code by programmers.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Real-time_software_rendering">Real-time software rendering</h2></div>
<p>For real-time rendering the focus is on performance. The earliest texture mapped real-time software renderers for PCs used many tricks to create the illusion of 3D geometry (<a href="True_3D" class="mw-redirect" title="True 3D">true 3D</a> was limited to flat or <a href="Gouraud_shading" title="Gouraud shading">Gouraud-shaded</a> <a href="Polygon" title="Polygon">polygons</a> employed mainly in <a href="Flight_simulator" title="Flight simulator">flight simulators</a>.) <i><a href="Ultima_Underworld" class="mw-redirect" title="Ultima Underworld">Ultima Underworld</a></i>, for example, allowed a limited form of looking up and down, slanted floors, and rooms over rooms, but resorted to <a href="Sprite_(computer_graphics)" title="Sprite (computer graphics)">sprites</a> for all detailed objects. The technology used in these games is currently categorized as <a href="2.5D" title="2.5D">2.5D</a>.
</p><p>One of the first games architecturally similar to modern 3D titles, allowing full <a href="Six_degrees_of_freedom" title="Six degrees of freedom">6DoF</a>, was <i><a href="Descent_(video_game)" title="Descent (video game)">Descent</a></i>, which featured <a href="3D_model" class="mw-redirect" title="3D model">3D models</a> entirely made from bitmap <a href="Texture_mapping" title="Texture mapping">textured</a> triangular polygons. <a href="Voxel" title="Voxel">Voxel</a>-based graphics also gained popularity for fast and relatively detailed terrain rendering, as in <i><a href="Delta_Force_(video_game)" title="Delta Force (video game)">Delta Force</a></i>, but popular <a href="Fixed-function" class="mw-redirect" title="Fixed-function">fixed-function</a> hardware eventually made its use impossible. <i><a href="Quake_(video_game)" title="Quake (video game)">Quake</a></i> features an efficient software renderer by <a href="Michael_Abrash" title="Michael Abrash">Michael Abrash</a> and <a href="John_D._Carmack" class="mw-redirect" title="John D. Carmack">John Carmack</a>. With its popularity, <i>Quake</i> and other polygonal 3D games of that time helped the sales of <a href="Video_card" class="mw-redirect" title="Video card">graphics cards</a>, and more games started using hardware <a href="API" title="API">APIs</a> like <a href="DirectX" title="DirectX">DirectX</a> and <a href="OpenGL" title="OpenGL">OpenGL</a>. Though software rendering fell off as a primary rendering technology, many games well into the 2000s still had a software renderer as a fallback, <i><a href="Unreal_(1998_video_game)" title="Unreal (1998 video game)">Unreal</a></i> and <i><a href="Unreal_Tournament" title="Unreal Tournament">Unreal Tournament</a></i> for instance, feature software renderers able to produce enjoyable quality and performance on CPUs of that period. One of the last <a href="AAA_(video_game_industry)" title="AAA (video game industry)">AAA games</a> without a hardware renderer was <i><a href="Outcast_(game)" class="mw-redirect" title="Outcast (game)">Outcast</a></i>, which featured advanced voxel technology but also <a href="Texture_filtering" title="Texture filtering">texture filtering</a> and <a href="Bump_mapping" title="Bump mapping">bump mapping</a> as found on graphics hardware.
</p><p>In the <a href="Video_game_console" title="Video game console">video game console</a> and <a href="Arcade_game" title="Arcade game">arcade game</a> markets, the evolution of 3D was more abrupt, as they had always relied heavily on single-purpose chipsets. 16 bit consoles gained RISC accelerator cartridges in games such as <i><a href="StarFox" class="mw-redirect" title="StarFox">StarFox</a></i> and <i><a href="Virtua_Racing" title="Virtua Racing">Virtua Racing</a></i> which implemented software rendering through tailored instruction sets. The <a href="Atari_Jaguar" title="Atari Jaguar">Jaguar</a> and <a href="3DO_Interactive_Multiplayer" class="mw-redirect" title="3DO Interactive Multiplayer">3DO</a> were the first consoles to ship with 3D hardware, but it wasn't until the <a href="PlayStation_(console)" title="PlayStation (console)">PlayStation</a> that such features came to be used in most games.
</p><p>Games for children and casual gamers (who use outdated systems or systems primarily meant for office applications) during the late 1990s to early 2000s typically used a software renderer as a fallback. For example, <i><a href="Toy_Story_2%3A_Buzz_Lightyear_to_the_Rescue" title="Toy Story 2: Buzz Lightyear to the Rescue">Toy Story 2: Buzz Lightyear to the Rescue</a></i> has a choice of selecting either hardware or software rendering before playing the game, while others like <i><a href="Half-Life_(video_game)" title="Half-Life (video game)">Half-Life</a></i> default to software mode and can be adjusted to use OpenGL or DirectX in the Options menu. Some 3D modeling software also features software renderers for visualization. And finally the <a href="Emulator" title="Emulator">emulation</a> and <a href="Functional_verification" title="Functional verification">verification</a> of hardware also requires a software renderer. An example of the latter is the <a href="Direct3D" title="Direct3D">Direct3D</a> reference rasterizer.
</p><p>But even for high-end graphics, the 'art' of software rendering hasn't completely died out. While early graphics cards were much faster than software renderers and originally had better quality and more features, it restricted the developer to 'fixed-function' pixel processing. Quickly there came a need for diversification of the looks of games. Software rendering has no restrictions because an arbitrary program is executed. So graphics cards reintroduced this programmability, by executing small programs per <a href="Vertex_(geometry)" title="Vertex (geometry)">vertex</a> and per <a href="Pixel" title="Pixel">pixel</a>/<a href="Fragment_(computer_graphics)" title="Fragment (computer graphics)">fragment</a>, also known as <a href="Shaders" class="mw-redirect" title="Shaders">shaders</a>. Shader languages, such as <a href="High_Level_Shader_Language" class="mw-redirect" title="High Level Shader Language">High Level Shader Language</a> (HLSL) for DirectX or the <a href="OpenGL_Shading_Language" title="OpenGL Shading Language">OpenGL Shading Language</a> (GLSL), are <a href="C_(programming_language)" title="C (programming language)">C</a>-like programming languages for shaders and start to show some resemblance with (arbitrary function) software rendering.
</p><p>Since the adoption of graphics hardware as the primary means for real-time rendering, CPU performance has grown steadily as ever. This allowed for new software rendering technologies to emerge. Although largely overshadowed by the performance of hardware rendering, some modern real-time software renderers manage to combine a broad feature set and reasonable performance (for a software renderer), by making use of specialized <a href="Dynamic_compilation" title="Dynamic compilation">dynamic compilation</a> and advanced instruction set extensions like <a href="Streaming_SIMD_Extensions" title="Streaming SIMD Extensions">SSE</a>. Although nowadays the dominance of hardware rendering over software rendering is undisputed because of unparalleled performance, features, and continuing innovation, some believe that CPUs and <a href="GPU" class="mw-redirect" title="GPU">GPUs</a> will converge one way or another and the line between software and hardware rendering will fade.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Software_fallback">Software fallback</h3></div>
<p>For various reasons such as hardware failure, broken drivers, emulation, quality assurance, software programming, hardware design, and hardware limitations, it is sometimes useful to let the CPU assume some or all functions in a graphics pipeline.
</p><p>As a result, there are a number of general-purpose software packages capable of replacing or augmenting an existing hardware graphical accelerator, including:
</p>
<ul><li><a href="RAD_Game_Tools" class="mw-redirect" title="RAD Game Tools">RAD Game Tools</a>' Pixomatic, sold as middleware intended for static linking inside D3D 7โ9 client software.</li>
<li><a href="TransGaming_Inc." class="mw-redirect" title="TransGaming Inc.">SwiftShader</a>, a library sold as middleware intended for bundling with D3D9 & OpenGL ES 2 client software.</li>
<li>The swrast, softpipe, & LLVMpipe renderers inside <a href="Mesa_(computer_graphics)" title="Mesa (computer graphics)">Mesa</a> work as a shim at the system level to emulate an OpenGL 1.4โ3.2 hardware device. The lavapipe renderer also featured in Mesa provides software rendering for the <a href="Vulkan" title="Vulkan">Vulkan</a> API.</li>
<li><a href="Windows_Advanced_Rasterization_Platform" title="Windows Advanced Rasterization Platform">WARP</a>, provided since Windows Vista by Microsoft, which works at the system level to provide fast D3D 9.1 and above emulation. This is in addition to the extremely slow software-based reference rasterizer Microsoft has always provided to developers.</li>
<li>The Apple software renderer in <a href="Core_OpenGL" title="Core OpenGL">CGL</a>, provided in Mac OS X by Apple, which works at the system level to provide fast OpenGL 1.1โ4.1 emulation.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Pre-rendering">Pre-rendering</h2></div>
<p>Contrary to real-time rendering, performance is only of second priority with pre-rendering. It is used mainly in the film industry to create high-quality renderings of lifelike scenes. Many <a href="Special_effects" class="mw-redirect" title="Special effects">special effects</a> in today's movies are entirely or partially created by computer graphics. For example, the character of <a href="Gollum" title="Gollum">Gollum</a> in the <a href="Peter_Jackson" title="Peter Jackson">Peter Jackson</a> <i><a href="The_Lord_of_the_Rings_(film_series)" title="The Lord of the Rings (film series)">The Lord of the Rings</a></i> films is made completely of <a href="Computer-generated_imagery" title="Computer-generated imagery">computer-generated imagery</a> (CGI). Also for <a href="Animation" title="Animation">animation</a> movies, CGI is gaining popularity. Most notably <a href="Pixar" title="Pixar">Pixar</a> has produced a series of movies such as <i><a href="Toy_Story" title="Toy Story">Toy Story</a></i> and <i><a href="Finding_Nemo" title="Finding Nemo">Finding Nemo</a></i>, and the <a href="Blender_Foundation" title="Blender Foundation">Blender Foundation</a> the world's first <a href="Blender_(software)#Open_projects" title="Blender (software)">open movie</a>, <i><a href="Elephants_Dream" title="Elephants Dream">Elephants Dream</a></i>.
</p><p>Because of the need for very high-quality and diversity of effects, offline rendering requires a lot of flexibility. Even though commercial real-time graphics hardware is becoming higher in quality and more programmable by the day, most <a href="Photorealistic_rendering" class="mw-redirect" title="Photorealistic rendering">photorealistic</a> CGI still requires software rendering. Pixar's <a href="RenderMan_(software)" class="mw-redirect" title="RenderMan (software)">RenderMan</a>, for example, allows shaders of unlimited length and complexity, demanding a general-purpose processor. Older hardware is also incapable of techniques for high realism like <a href="Ray_tracing_(graphics)" title="Ray tracing (graphics)">raytracing</a> and <a href="Global_illumination" title="Global illumination">global illumination</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="3D_computer_graphics" title="3D computer graphics">3D computer graphics</a></li>
<li><a href="Headless_software" title="Headless software">Headless software</a></li>
<li><a href="Z-buffering" title="Z-buffering">Z-buffering</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20140221045119/http://usa.autodesk.com/adsk/servlet/item?id=17940930&siteID=123112">"LIVE Design - Interactive Visualizations | Autodesk"</a>. Archived from <a rel="nofollow" class="external text" href="http://usa.autodesk.com/adsk/servlet/item?id=17940930&siteID=123112">the original</a> on February 21, 2014<span class="reference-accessdate">. Retrieved <span class="nowrap">2016-08-20</span></span>.</cite></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><cite id="CITEREFValich2008" class="citation web cs1">Valich, Theo (11 March 2008). <a rel="nofollow" class="external text" href="https://www.tgdaily.com/business/tim-sweeney-part-2-directx-10-is-the-last-relevant-graphics-api/">"Tim Sweeney, Part 2: "DirectX 10 is the last relevant graphics API" | TG Daily"</a>. <i>TG Daily</i>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20160304145146/http://www.tgdaily.com/business-and-law-features/36410-tim-sweeney-part-2-directx-10-is-the-last-relevant-graphics-api">Archived</a> from the original on March 4, 2016<span class="reference-accessdate">. Retrieved <span class="nowrap">2016-11-07</span></span>.</cite></span>
</li>
</ol></div></div>
<p><br>
</p>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" ยท ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}
/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby="Computer_graphics188" style="padding:3px"><table class="nowraplinks mw-collapsible mw-collapsed navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div id="Computer_graphics188" style="font-size:114%;margin:0 4em"><a href="Computer_graphics_(computer_science)" title="Computer graphics (computer science)">Computer graphics</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Vector_graphics" title="Vector graphics">Vector graphics</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Diffusion_curve" title="Diffusion curve">Diffusion curve</a></li>
<li><a href="Pixel" title="Pixel">Pixel</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="2D_computer_graphics" title="2D computer graphics">2D graphics</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Alpha_compositing" title="Alpha compositing">Alpha compositing</a></li>
<li><a href="Layers_(digital_image_editing)" title="Layers (digital image editing)">Layers</a></li>
<li><a href="Text-to-image_model" title="Text-to-image model">Text-to-image</a></li></ul>
</div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th id="2.5D8" scope="row" class="navbox-group" style="width:1%"><a href="2.5D" title="2.5D">2.5D</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Isometric_video_game_graphics" title="Isometric video game graphics">Isometric graphics</a></li>
<li><a href="Mode_7" title="Mode 7">Mode 7</a></li>
<li><a href="Parallax_scrolling" title="Parallax scrolling">Parallax scrolling</a></li>
<li><a href="Ray_casting" title="Ray casting">Ray casting</a></li>
<li><a href="Skybox_(video_games)" title="Skybox (video games)">Skybox</a></li></ul>
</div></td></tr></tbody></table><div>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="3D_computer_graphics" title="3D computer graphics">3D graphics</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="3D_projection" title="3D projection">3D projection</a></li>
<li><a href="3D_rendering" title="3D rendering">3D rendering</a></li>
<li>(<a href="Image-based_modeling_and_rendering" title="Image-based modeling and rendering">Image-based</a></li>
<li><a href="Spectral_rendering" title="Spectral rendering">Spectral</a></li>
<li><a href="Unbiased_rendering" title="Unbiased rendering">Unbiased</a>)</li>
<li><a href="Aliasing" title="Aliasing">Aliasing</a></li>
<li><a href="Anisotropic_filtering" title="Anisotropic filtering">Anisotropic filtering</a></li>
<li><a href="Cel_shading" title="Cel shading">Cel shading</a></li>
<li><a href="Fluid_animation" title="Fluid animation">Fluid animation</a></li>
<li><a href="Computer_graphics_lighting" title="Computer graphics lighting">Lighting</a>
<ul><li><a href="Global_illumination" title="Global illumination">Global illumination</a></li></ul></li>
<li><a href="Hidden-surface_determination" title="Hidden-surface determination">Hidden-surface determination</a></li>
<li><a href="Polygon_mesh" title="Polygon mesh">Polygon mesh</a></li>
<li>(<a href="Triangle_mesh" title="Triangle mesh">Triangle mesh</a>)</li>
<li><a href="Shading" title="Shading">Shading</a>
<ul><li><a href="Deferred_shading" title="Deferred shading">Deferred</a></li></ul></li>
<li><a href="Surface_triangulation" title="Surface triangulation">Surface triangulation</a></li>
<li><a href="Wire-frame_model" title="Wire-frame model">Wire-frame model</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Concepts</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Affine_transformation" title="Affine transformation">Affine transformation</a></li>
<li><a href="Back-face_culling" title="Back-face culling">Back-face culling</a></li>
<li><a href="Clipping_(computer_graphics)" title="Clipping (computer graphics)">Clipping</a></li>
<li><a href="Collision_detection" title="Collision detection">Collision detection</a></li>
<li><a href="Planar_projection" title="Planar projection">Planar projection</a></li>
<li><a href="Reflection_(computer_graphics)" title="Reflection (computer graphics)">Reflection</a></li>
<li><a href="Rendering_(computer_graphics)" title="Rendering (computer graphics)">Rendering</a>
<ul><li><a href="Beam_tracing" title="Beam tracing">Beam tracing</a></li>
<li><a href="Cone_tracing" title="Cone tracing">Cone tracing</a></li>
<li><a href="Checkerboard_rendering" title="Checkerboard rendering">Checkerboard rendering</a></li>
<li><a href="Ray_tracing_(graphics)" title="Ray tracing (graphics)">Ray tracing</a></li>
<li><a href="Path_tracing" title="Path tracing">Path tracing</a></li>
<li><a href="Ray_casting" title="Ray casting">Ray casting</a></li>
<li><a href="Scanline_rendering" title="Scanline rendering">Scanline rendering</a></li></ul></li>
<li><a href="Rotation_(mathematics)" title="Rotation (mathematics)">Rotation</a></li>
<li><a href="Scaling_(geometry)" title="Scaling (geometry)">Scaling</a></li>
<li><a href="Shadow_mapping" title="Shadow mapping">Shadow mapping</a></li>
<li><a href="Shadow_volume" title="Shadow volume">Shadow volume</a></li>
<li><a href="Shear_matrix" class="mw-redirect" title="Shear matrix">Shear matrix</a></li>
<li><a href="Shader" title="Shader">Shader</a></li>
<li><a href="Texel_(graphics)" title="Texel (graphics)">Texel</a></li>
<li><a href="Translation_(geometry)" title="Translation (geometry)">Translation</a></li>
<li><a href="Volume_rendering" title="Volume rendering">Volume rendering</a></li>
<li><a href="Voxel" title="Voxel">Voxel</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Graphics_software" title="Graphics software">Graphics software</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="List_of_3D_computer_graphics_software" title="List of 3D computer graphics software">3D computer graphics software</a>
<ul><li><a href="List_of_3D_animation_software" title="List of 3D animation software">animation</a></li>
<li><a href="List_of_3D_modeling_software" title="List of 3D modeling software">modeling</a></li>
<li><a href="List_of_3D_rendering_software" title="List of 3D rendering software">rendering</a></li></ul></li>
<li><a href="Raster_graphics_editor" title="Raster graphics editor">Raster graphics editors</a></li>
<li><a href="Comparison_of_vector_graphics_editors" title="Comparison of vector graphics editors">Vector graphics editors</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Algorithms</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="List_of_computer_graphics_algorithms" class="mw-redirect" title="List of computer graphics algorithms">List of computer graphics algorithms</a></li></ul>
</div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-07-11" href="https://en.wikipedia.org/wiki/?title=Software_rendering&oldid=1299974745">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>